﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Coolite.Ext.Web;
using ENT.GP.Core.Core;
using ENT.GP.Core.Autenticacion;
using entgp.Code;
using ENT.GP.Core.Mail;
using ENT.GP.Core;

namespace entgp.Usuarios
{
    public partial class wucUsuarios : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RolesLookup.InvalidateCache();
                StoreRol.DataSource = RolesLookup.GetNameValueList();
                StoreRol.DataBind();
            }
        }
        internal void Mostrar(string operacion,int id)
        {
            hidOperacion.SetValue(operacion);
            hidId.SetValue(id);
            
            if (operacion=="Editar")
            {
                Usuario objUser = Usuario.GetUsuario(id);
                txtApellido.SetValue(objUser.Apellido);
                txtEMail.SetValue(objUser.Mail);
                txtNombre.SetValue(objUser.Nombre);
                txtTelefono.SetValue(objUser.Telefono);
                txtUsuario.SetValue(objUser.Login);
                txtUsuario.Enabled = false;
                cbxRol.SetValue(objUser.IdRol);
                txtClave.SetValue(objUser.Clave);
            }
            else
                txtUsuario.Enabled = true;
            winMiCuenta.Show();
        }
        protected void btnGuardar_Click(object sender, AjaxEventArgs e)
        {
            try
            {                
                Usuario usuario=null;
                int id,IdRol;
                int.TryParse(hidId.Text, out id);
                if (hidOperacion.Text == "Editar")
                    usuario = Usuario.GetUsuario(id);
                else if(hidOperacion.Text=="Nuevo" )
                    usuario = Usuario.NewUsuario(); 
                usuario.Apellido = txtApellido.Text;
                usuario.Clave = txtClave.Text;
                int.TryParse(cbxRol.SelectedItem.Value, out IdRol);
                usuario.IdRol = IdRol;
                usuario.Login = txtUsuario.Text;
                usuario.Mail = txtEMail.Text;
                usuario.Nombre = txtNombre.Text;
                usuario.Telefono = txtTelefono.Text;
                usuario = usuario.Save();
                UtilP.MostrarNotificacion("El usuario se guardo correctamente","Registro de Usuarios",MessageBox.Icon.INFO );
                Mail.EnviarMail("", usuario.Mail, "Registro de Cuenta", "Su cuenta ah sido registrada correctamente");
                winMiCuenta.Hide();
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.Message);
            }
        }
        protected void txtUsuario_Change(object sender, AjaxEventArgs e)
        {
            try
            {
                if (Usuario.VerificarLogin(txtUsuario.Text))
                {
                    UtilP.MostrarNotificacion("El usuario ya existe", "Registro de Usuarios", MessageBox.Icon.WARNING);
                    txtUsuario.Text = "";
                }
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.Message);
            }
        }
    }
}